home *** CD-ROM | disk | FTP | other *** search
- { $PAGESIZE:80,$LIST+, $DEBUG+, $BRAVE+, $LINESIZE:132, $OCODE+ }
- { $NILCK+, $MATHCK+, $RANGECK+, $INITCK+, $INDEXCK+, $ENTRY+ }
- { $LINE+, $RUNTIME+, $SYMTAB+, $WARN+, $GOTO+ }
- { $TITLE:'WCOUNT.PAS (VOL-ID: MSB-PASSCRATCH) -- WRDCOUNT PROG'}
- { $SUBTITLE:'PROGRAM FOR CHECKING CONTENTS OF ASCII FILES'}
- { $MESSAGE:'PASCAL - COMPILATION OPTIONS SET' }
- { $MESSAGE:'SYSTEM - COMPILATION BEGINS' }
-
- { $LIST-}
- { $INCLUDE:'A:FILKQQ.INC'}
- { $INCLUDE:'A:FILUQQ.INC'}
- { $LIST+}
-
- PROGRAM WRDCNT (INPUT,OUTPUT); USES FILUQQ,FILKQQ;
-
- CONST
- WRDLEN = 20; {MAX WRD LENGTH}
- BLANK = ' '; {A BLANK CHAR}
- PGLINES = 66;
-
-
- TYPE
- ALFASET = SET OF CHAR;
-
- VAR
- NEW_WRD : LSTRING(WRDLEN);
- SOURCE : TEXT; {SOURCE FILE}
- PGCNT, LNCNT, WDCNT, CHCNT : WORD;
- ALPHA : ALFASET;
- CMDLINE : LSTRING (80); {80 CHARS FOR THE COMMAND LINE ENOUGH}
- CURTIME, CURDATE : STRING(10);
-
- PROCEDURE DATE (VAR S:STRING); EXTERN; {LIBR FUNCTION}
- PROCEDURE TIME (VAR S:STRING); EXTERN; {LIBR FUNCTION}
- PROCEDURE ENDXQQ; EXTERN;
-
- PROCEDURE INITIALIZE;
- VAR
- ERROR : WORD;
- BEGIN
- ALPHA := ['A'..'Z','a'..'z', '_', '$'];
- TIME (CURTIME);
- DATE (CURDATE);
- CMDLINE := NULL;
- SOURCE.TRAP := TRUE;
- ERROR := PPMUQQ (0,ADR NULL,CMDLINE);
- IF CMDLINE = NULL THEN {FILENAME WAS NOT GIVEN ON COMMAND LINE}
- BEGIN
- WRITE (OUTPUT, 'MSB> FILE? ');
- SOURCE.TRAP := TRUE;
- READFN (INPUT, SOURCE); {READ AND ASSIGN FILENAME}
- END
- ELSE {ASSIGN THE NAME BY HAND}
- ASSIGN (SOURCE,CMDLINE);
- RESET (SOURCE);
- IF SOURCE.ERRS <> 0 THEN
- BEGIN
- WRITELN (OUTPUT, 'MSB> *** File Not Found, or Disk Error');
- ENDXQQ
- END;
- PGCNT := 00;
- LNCNT := 00;
- WDCNT := 00;
- CHCNT := 00;
- END; {PROCEDURE}
-
- PROCEDURE SCANFILE;
- VAR
- I : INTEGER;
- C : CHAR;
- BEGIN
- C := BLANK;
- I := 00;
- WHILE NOT EOF (SOURCE) DO
- BEGIN
- WHILE NOT EOF(SOURCE) AND NOT (C IN ALPHA) DO
- BEGIN
- IF EOLN (SOURCE) THEN LNCNT := LNCNT + 1;
- READ (SOURCE, C); CHCNT := CHCNT + 1;
- END;
- WHILE NOT EOF(SOURCE) AND (C IN ALPHA) DO
- BEGIN
- IF EOLN (SOURCE) THEN LNCNT := LNCNT + 1;
- CHCNT := CHCNT + 1; I := I + 1;
- IF I <= WRDLEN THEN
- NEW_WRD [I] := C;
- READ (SOURCE, C)
- END;
- IF I > 0 THEN
- BEGIN
- I := 0;
- WDCNT := WDCNT + 1
- END
- END
- END; {PROCEDURE}
-
- BEGIN {MAIN}
- INITIALIZE;
- WRITELN (OUTPUT, 'MSB> *IN PROGRESS ',CURDATE,NULL:1,CURTIME);
- SCANFILE;
- PGCNT := LNCNT DIV PGLINES;
- CHCNT := CHCNT - LNCNT; {CARRIAGE RETURN CHARS HAVE BEEN INCLUDED}
- IF LNCNT MOD PGLINES <> 00 THEN PGCNT := PGCNT + 1;
- WRITELN (OUTPUT,NULL:10,'LINES: WORDS: CHARS: PAGES:');
- WRITELN (OUTPUT,NULL:10,'----- ----- ----- -----');
- WRITELN (OUTPUT,NULL:10,LNCNT:5,NULL:4,WDCNT:5,NULL:5,CHCNT:5,NULL:5,PGCNT:5);
- END.